package Thread;

/**
 * @author 王艺锡
 * @version 1.0
 * 通过继承Thread类创建线程
 */
public class Thread01 {
    public static void main(String[] args) {
        Cat cat = new Cat();
        //cat.run();如果直接调用run方法，则不会开启一个子线程，会把当前run方法走完，再继续执行下面的代码
        cat.start();//启动线程，最终走的是cat的run方法
        //start方法中会调用start0方法，start0是本地方法，由JVM机调用，
        // start0方法真正实现了多线程的效果

        //当main线程启动一个子线程的时候，主线程不会阻塞，会继续执行
        System.out.println("主线程继续执行...");
        for (int i = 0;i<10;i++){
            System.out.println("他妈的家都没了，还在上路给这嗨！你好！" + "主线程名:" + Thread.currentThread().getName());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

//1.当一个类继承了Thread类，该类就可以当做线程使用
//2.我们会重写run方法，在其中实现自己的业务逻辑
//3.run Thread类，实现了Runnable接口的run方法
class Cat extends Thread {

    @Override
    public void run() {
        int count = 0;

        while (count < 8) {
            //线程每隔一秒，输出一句话1
            System.out.println("嘿，你好!" + (count + 1) + "子线程名:" + Thread.currentThread().getName());
            //让线程休眠一秒
            try {
                Thread.sleep(1000);//会抛出异常
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            count++;
        }


    }
}
